package com.xoms.admin.persist.dao;

import java.util.List;

import com.xoms.admin.model.PurchaseBean;
import com.xoms.admin.model.PurchaseDetailBean;
import com.xoms.admin.model.vo.AuditPurechaseBean;
import com.xoms.admin.model.vo.BatchPurchaseBean;

/**
 * 商品采购单详情dao接口
 * @author chengl
 *
 */
public interface PurchaseDao {
	
	/**
	 * 查询采购单数量
	 * @param key
	 * @param storeHouseId
	 * @param endTime 
	 * @param startTime 
	 * @return
	 */
	int selectCount(String key, String storeHouseId, String startTime, String endTime);
	
	/**
	 * 获取采购单列表
	 * @param key
	 * @param page
	 * @param pageSize
	 * @param storeHouseId
	 * @return
	 */
	List<PurchaseBean> selectList(String key, int page, int pageSize, String storeHouseId, String startTime, String endTime);
	
	/**
	 * 获取采购单基本信息
	 * @param pid
	 * @return
	 */
	PurchaseBean selectOneById(String pid);
	
	/**
	 * 获取采购单详情信息数量
	 * @param key
	 * @param purchaseId
	 * @param paging 
	 * @return
	 */
	int selectDetailCount(String key, String purchaseId);
	
	/**
	 * 获取采购单详情列表
	 * @param key
	 * @param page
	 * @param pageSize
	 * @param purchaseId
	 * @return
	 */
	List<PurchaseDetailBean> selectDetailList(String key, int page, int pageSize, String purchaseId, int paging);

	/**
	 * 获取当年内最大采购数量
	 * @return
	 */
	String selectMaxPureNoInYear();
	
	/**
	 * 新建
	 * @param data
	 * @return
	 */
	int insert(PurchaseBean data);
	
	/**
	 * 更新
	 * @param data
	 * @return
	 */
	int update(PurchaseBean data);
	
	/**
	 * 批量更新采购商品详情
	 * @param batch
	 * @return
	 */
	int replaceBatchDetail(List<BatchPurchaseBean> batch);
	
	/**
	 * 删除采购单
	 * @param purchaseId
	 * @return
	 */
	int del(String purchaseId);
		
	/**
	 * 更新采购单提交状态
	 * @param purchaseId
	 * @return
	 */
	int updateSubmitStatus(String purchaseId, Integer status);
	
	/**
	 * 删除采购单关联的详情
	 * @param purchaseId
	 * @return
	 */
	int delDetails(String purchaseId);

	int selectDetailCountById(String purchaseId);
	
	/**
	 * 更新采购数量
	 * @param pid
	 * @param totalCost
	 * @return
	 */
	int updateTotalCost(String pid, double totalCost);
	
	/**
	 * 获取商品详情
	 * @param aid
	 * @return
	 */
	AuditPurechaseBean selectAuditPureDetailsById(String aid);
	
}
